home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 145
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin
/
docs
/
fdimg
/
fdimg.doc
Wrap
Text File
|
2000-05-08
|
6KB
|
213 lines
フロッピーディスクイメージファイルの基礎と応用
→余談をいっぱい散りばめて
編集部:舩本昇竜
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
EX68で扱われる2HDディスクイメージファイルは、文字通り、2HDフロッピーデ
ィスクの内容をまるごと抜き取り、1つのファイルにしたものです。
と、論理的な説明はこれで十分なのですが、せっかくの機会なので、もう少し
フロッピーについての低レベル(ハードウェアより)な点をおさえましょう。な
お、ここでいうFDとは、特にことわりのない限り、X680x0で使用される5インチ
2HD(1.2MB)を指します。
○解析屋用語と実際用語の微妙な違い
まず、素朴な疑問の回答にもなる事実ですが、FDは、表裏、2つのヘッド(読
書装置)を持ち、両面記録を行います。また、両面とも、「トラック」という単
位で77等分されています。つまり、1つのFDには「154のトラック」が存在
することになります。
→特殊な方法で、FDに155以上のトラックを作り、それをチェックする
「オーバートラック」というプロテクトが存在します(しました?)。
ここで少し問題となるのが、このトラックの考え方といいますか、数え方。FD
のトラックは、
片面77のトラックが2面ある:77×2
のではなく、
両面(サイド0+サイド1)に77トラックがある:2×77
となります(ちなみに「サイド0」はディスクの表をあらわし、「サイド1」は
ディスクの裏をあらわします)。
そもそも、FDのヘッドは表と裏の2つありますが、ヘッドを動かす軸は1つし
かありません(ですから、サイド0/サイド1という考えでアクセスを行うのは
「損」なのです)。実際、FDを先頭から順番にアクセスするようプログラムを組
むと、
サイド0のトラック0 (0)
サイド1のトラック0 (1)
サイド0のトラック1 (2)
サイド1のトラック1 (3)
: :
: :
サイド0のトラック76 (152)
サイド1のトラック76 (153)
という順番でアクセスされます。この時、アクセス順に番号をふると、それぞれ
のトラックには0から153の番号が付きます(便宜上、私はこの番号を「解析
屋用トラック」と呼んだりもしています。以後もことわりのない限りこちらを使
用します)。経験的に、普段(?)、この0~153という番号を良く使います
が、プログラミングの際には、どうしても「サイド」に関するパラメータが必要
となります。ですから、両者の関係はキチンと押さえておきましょう。
○さらにこまかく
結局のトコロ、2HDイメージファイルといわれる「まるまる読み込まれたFDの
内容」とは、FDのトラック0からトラック153まで、順番に読み込まれた内容
を指します。
さて、これらトラックは、さらに小さな「セクタ」と単位に分解することがで
きます(実際には、さらに細かく分類することも出来ますが、基本的に、分解出
来きる最小単位が「セクタ」と考えていいでしょう)。
→他に分解されるデータとして、ギャップ(GAP)、アドレスマーク(IDAM)
やCRCなどがあります。
カタめのFDのコピープロテクトの多くは、「読み込めても書き込めない」
これらの情報を特殊な装置で書き込むことで実現されていました。
具体的には、トラックは、8つのセクタに分解されます。つまり、FDは、12
32(=154×8)のセクタで構成されています(トラックと同様に、セクタ番号0~
1231であらわすコトもあります)。また、1つのセクタは1024バイトで構成
されているので、FDの容量は約1.2Mバイト(1261568バイト=1024×1232)となりま
す。
→例えば、DRIVE.XでFDを調べた時、
A: 2HD(1MB) ユニット番号・・・・ 0
1セクタあたりのバイト数・・・・・・・・・・・・・・・・ 1024
と表示されます。
○お互いの都合
疑問に思う人もいるとは思います。「なぜ、トラック>セクタと階層構造をと
らなくてはならないのか?」。これは、「FD(ハードウェア)にとって都合のよ
い分割方法がトラック」「ユーザー(ソフトウェア)にとって都合のよいサイズ
がセクタ」であり、両者の利害の差が出たと考えると納得出来るでしょう。
例えば、ハードウェアの都合でトラックは154必要ですが、セクタに関して
は、1セクタサイズを小さくしてセクタ数を増やすことも出来ます。
→ちょっとウソっぽいですが、普通はこのような認識で十分です。
→この例もやりすぎるとプロテクトになり、なかには、1トラックに24
セクタ!なんてものもありました。
○ FDIMG.Xの使い方
実際に2HDディスクイメージファイルを生成するプログラムの1つに、FDIMG.X
があります(「電脳倶楽部」の名の付く全てのCD-ROMに掲載されています)。
元々、「すてきな電脳倶楽部」の起動ディスク用を作成するために用意したプ
ログラムのため、かなり限定した仕様となっております。ご了承おば。
@>FDIMG
カレントにある、2HDイメージファイル「FDIMG.BIN」を読み込み、ド
ライブ0に挿入されているFDに書き出します。
(大抵の場合、FDIMG.BINの中身は電脳倶楽部の起動ディスク)
----------------------------------------------------------------
@>FDIMG -r [filename.2HD]
ドライブ0に挿入されているFDを読み込み、2HDイメージファイル
「filename.2HD」を生成します。filename.2HD省略時は、「fdimg.bin」
となります。必ず、HD上で実行してください。
@>FDIMG filename.2HD
2HDイメージファイル「filename.2HD」を読み込み、ドライブ0に挿
入されているFDに書き出します。
○最後に雑談
さて、みなさん。FDは、どうやってデジタルデータを記録しているかご存じで
すか? X680x0のFDの場合、MFMという記録方法を採用しているのですが、実は、
後ろの2文字の"FM"は、あのFMラジオと同じFMの意味があります。つまり、FDの
円盤に記録されている「本当のデータ」は、実はアナログなのです。???ちょ
っとこんがらがってきましたね。
その仕掛を大雑把に解説すると、全然違う「0を表すアナログ波形」「1を表
すアナログ波形」の2種類が用意され、書き込み時は、入力されたビット列に従
い、それぞれの波形をアナログで記録します。また、読み込み時は、その記録さ
れたアナログ信号を読み取り、「どちらの波形に近いか」を判断し、0か1を出
力します。
ポイントは、両者の波形は「全然違う」というトコロにあり、あくまでも「0
か1のどちらの波形に近いか」を判断するので、記録されたアナログデータが多
少変形劣化した程度であれば、問題なく0か1を判定することが出来るのです。
→FD用スマートメディアアダプタという製品がありますが、まさにあのア
ダプタは、メディア内のデジタルデータを、MFM形式で読み取ることの
出来るアナログデータに変換する装置です。FDドライブはそのアダプタ
が出力したアナログデータを読み込み、0/1を判定し、デジタルデー
タを出力します。つまり、デジタルメディアに納められたデジタルデー
タを読み込む為に、アナログ操作を2回行っているのです。
(EOF)